﻿namespace Oddo.Concept.Crm.Common.Communication.Requests
{
    using Newtonsoft.Json;
    using Oddo.Concept.Crm.Common.Communication.Interfaces;
    using Oddo.Concept.Crm.Common.Communication.Requests.Base;
    using Oddo.Concept.Crm.Common.Models;

    /// <summary>
    /// 
    /// </summary>
    [JsonObject(MemberSerialization.OptOut)]
    public abstract class FindRequest : RequestBase, IFindRequest
    {
        /// <summary>
        /// Obtient ou définit l'index de départ
        /// </summary>
        [JsonProperty("i")]
        public virtual int? Index { get; set; }
        /// <summary>
        /// Obtient ou définit la taille d'une page de resultat
        /// </summary>
        [JsonProperty("pz")]
        public virtual int? PageSize { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    [JsonObject(MemberSerialization.OptOut)]
    public class FindRequest<T> : RequestBase<T>, IFindRequest<T>
        where T : IBusinessModel
    {
        /// <summary>
        /// Obtient ou définit l'index de départ
        /// </summary>
        [JsonProperty("i")]
        public virtual int? Index { get; set; }
        /// <summary>
        /// Obtient ou définit la taille d'une page de resultat
        /// </summary>
        [JsonProperty("pz")]
        public virtual int? PageSize { get; set; }
    }
}